/**
 * 生成器替代迭代器
 */

function* createArrayIterator(arr) {
  //1.第一种写法
  // let index = 0
  // yield arr[index++]
  // yield arr[index++]
  // yield arr[index++]

  //2.第二种写法
  // for (const item of arr) {
  //   yield item
  // }

  //3.第三种写法 yield* 跟一个可迭代对象
  yield* arr
}

const names = ['jack', 'lucy', 'tom']
const namesIterator = createArrayIterator(names)
console.log(namesIterator.next())
console.log(namesIterator.next())
console.log(namesIterator.next())
console.log(namesIterator.next())

/**
 * 案例2. 创建一个函数，这个函数可以迭代一个范围内的数字
 *
 */

function* createRange(m, n) {
  for (let i = m; i <= n; i++) {
    yield i
  }
}

const rangeIterator = createRange(10, 20)
console.log(rangeIterator.next().value)
console.log(rangeIterator.next())
console.log(rangeIterator.next())
console.log(rangeIterator.next())
